#include "bsp_key.h"
#include "bsp_delay.h"
#include "bsp_gpio.h"

/* 初始化按键 */
void key_init(void)
{
	// IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0);			/* 复用为IO18 */
	// IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0xf080); /* 设置电器属性 */
	/* GPIO初始化 */
	// GPIO1->GDIR &= ~(1 << 18); /* 设置为输入 */
	gpio_pin_config_t config;
	config.direction = KGPIO_DiagitalInput;
	gpio_init(GPIO1, 18, &config);
}

/* 读取输入模式下，GPIO口的值 */
int read_key(void)
{
	int ret = 0;
	// ret = ((GPIO1->DR) >> 18) & 0x1;
	ret = gpio_pinread(GPIO1, 18);
	return ret;
}

/* 按键消抖 */
int key_getvalue(void)
{
	int ret = KEY_NONE;
	static unsigned char release = 1; /* 为1表示按键释放 */
	if ((release == 1 && read_key() == 0))
	{
		delay(10);
		release = 0;
		if (read_key() == 0) /* 如果延时10ms以后KEY0还是0，表示按键被按下 */
		{
			ret = KEY0_VALUE;
		}
		else if (read_key() == 1)
		{
			ret = KEY_NONE;
		}
		release = 1;
	}
	return ret;
}